﻿using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using CeA.Reports.Atendimento.Web.WebControls;
using CeA.Reports.Atendimento.DataAccess.Criteria;
using CeA.Reports.Atendimento.DataAccess.DTO;
using Qtech.Reports.Atendimento.Services;
using CeA.Reports.Atendimento.Web.ServerControls;
using CeA.Reports.Atendimento.Web.Helpers;

namespace CeA.Reports.Atendimento.Web.admin {
    public partial class loja : System.Web.UI.Page {

        protected void Page_Init(object sender, EventArgs e)                            {
            cmdPesquisarRfs.Click += new EventHandler(cmdPesquisarRfs_Click);
            cmdPesquisarRegiao.Click += new EventHandler(cmdPesquisarRegiao_Click);
            cmdPesquisarEspecialista.Click += new EventHandler(cmdPesquisarEspecialista_Click);
            cmdPesquisar.Click += new EventHandler(cmdPesquisar_Click);
            cmdLimpar.Click += new EventHandler(cmdLimpar_Click);

            pesquisaRfs.Confirmar += new PesquisaRfs.ConfirmarEventHandler(pesquisaRfs_Confirmar);
            pesquisaRegiao.Confirmar += new PesquisaRegiao.ConfirmarEventHandler(pesquisaRegiao_Confirmar);
            pesquisaEspecialista.Confirmar += new PesquisaEspecialista.ConfirmarEventHandler(pesquisaEspecialista_Confirmar);

            dataList.ItemCommand += new DataListCommandEventHandler(dataList_ItemCommand);
            MessageBox.Command += new MessageBox.CommandEventHandler(MessageBox_Command);
        }


        protected void Page_Load(object sender, EventArgs e)                            {
            if(Request.QueryString["tag"] == "plan") {
                this.PageMode = "PLANEJAMENTO";
                menuInterno.addMenuItem("Relatorio de Planejamento", "/site/relatorioplanejamento.aspx");
                
                cmdPlanejar.Visible = true;
                cmdPlanExec.Visible = false;
                
                cmdEditar.Visible = false;
                cmdExcluir.Visible = false;

                form_title.InnerText = "Dados da Loja: Planejamento";
                
            }

            if (Request.QueryString["tag"] == "planexec") {
                this.PageMode = "PLANEJAMENTO_EXECUTADO";
                //menuInterno.addMenuItem("Planejamento Executado", "/site/relatorioplanejadoexecutado.aspx");
                
                cmdPlanejar.Visible = false;
                cmdPlanExec.Visible = true;

                cmdEditar.Visible = false;
                cmdExcluir.Visible = false;

                form_title.InnerText = "Dados da Loja: Relatório de Planejamento Executado";
            }

            menuInterno.addMenuItem("Incluir Nova Loja", "/admin/lojacadastro.aspx");
        }


        protected void cmdPesquisar_Click(object sender, EventArgs e)                   {
            CarregarLista();
        }


        protected void cmdLimpar_Click(object sender, EventArgs e)                      {
            txtSigla.Text           = string.Empty;
            txtNome.Text            = string.Empty;
            txtRfs.Text             = string.Empty;
            txtRegiao.Text          = string.Empty;
            txtEspecialista.Text    = string.Empty;
            this.CodigoRfs          = 0;
            this.CodigoRegiao       = 0;
            this.CodigoEspecialista = 0;
            txtSigla.Focus();

            dataList.DataSource = null;
            dataList.DataBind();

            gridHeader.Visible = false;
            gridScroll.Visible = false;
            editControls.Visible = false;
       }


        protected void cmdEditar_Click(object sender, EventArgs e)                      {
            if (this.PageMode == "PLANEJAMENTO") return;
            
            List<GroupRadioButton> rbtList = DatalistHelper.FindControl<GroupRadioButton>(dataList, "rbtItem");

            foreach (GroupRadioButton rbt in rbtList) {
                if (rbt.Checked) {
                    this.CodigoLoja = Convert.ToInt32(rbt.Text);
                    this.PageMode = "EDIT";
                    Server.Transfer("lojacadastro.aspx", true);
                }
            }

            MessageBox.pop("É necessário selecionar um registro para editar!");
        }


        protected void cmdExcluir_Click(object sender, EventArgs e)                     {
            if (this.PageMode == "PLANEJAMENTO" || this.PageMode == "PLANEJAMENTO_EXECUTADO") return;

            List<GroupRadioButton> rbtList = DatalistHelper.FindControl<GroupRadioButton>(dataList, "rbtItem");

            foreach (GroupRadioButton rbt in rbtList) {
                if (rbt.Checked) {
                    this.CodigoLoja = Convert.ToInt32(rbt.Text);

                    MessageBox.pop("Deseja excluir o registro selecionado?", MessageBoxButtoms.YesNo);
                    MessageBox.CommandName = "DELETE";

                    return;
                }
            }

            MessageBox.pop("É necessário selecionar um registro para excluir!");
        }


        protected void cmdPlanejar_Click(object sender, EventArgs e)                    {
            if (this.PageMode != "PLANEJAMENTO") return;

            List<GroupRadioButton> rbtList = DatalistHelper.FindControl<GroupRadioButton>(dataList, "rbtItem");

            foreach (GroupRadioButton rbt in rbtList) {
                if (rbt.Checked) {
                    this.CodigoLoja = Convert.ToInt32(rbt.Text);
                    this.PageMode = "PLANEJAMENTO";
                    Server.Transfer("planejamentocadastro.aspx", true);
                }
            }

            MessageBox.pop("É necessário selecionar um registro para criar/vizualizar o planejamento!");
        }


        protected void cmdPlanExec_Click(object sender, EventArgs e)                    {
            if (this.PageMode != "PLANEJAMENTO_EXECUTADO") return;

            List<GroupRadioButton> rbtList = DatalistHelper.FindControl<GroupRadioButton>(dataList, "rbtItem");

            foreach (GroupRadioButton rbt in rbtList) {
                if (rbt.Checked) {
                    this.CodigoLoja = Convert.ToInt32(rbt.Text);
                    this.PageMode = "PLANEJAMENTO_EXECUTADO";
                    Server.Transfer("/site/relatorioplanejadoexecutado.aspx", true);
                }
            }

            MessageBox.pop("É necessário selecionar um registro para visualizar o planejamento executado!");
        }


        protected void dataList_ItemCommand(object source, DataListCommandEventArgs e)  {
            if (e.CommandName == "VIEW") {
                this.CodigoLoja = Convert.ToInt32(e.CommandArgument);
                Server.Transfer("lojacadastro.aspx", true);
            }
        }


        protected void MessageBox_Command(object sender, MessageBoxEventArgs e)         {
            if (e.CommandName == "DELETE" && e.Command == MessageBoxCommand.Yes) {
                try{
                    CadastroFacade.RemoveLoja(this.CodigoLoja);     
                }catch (Exception ex) {
                    //InvalidOperationException
                    MessageBox.pop(ex.Message);
                }
               
                CarregarLista();
            }
        }
       

        private void CarregarLista()                                                    {
            LojaCriteria filter = new LojaCriteria();
            filter.Sigla = txtSigla.Text;
            filter.Nome = txtNome.Text;
            
            if(this.CodigoRfs>0)
                filter.addRfs(this.CodigoRfs);
            
            if (this.CodigoRegiao > 0)            
                filter.addRegiao(this.CodigoRegiao);
            
            if(this.CodigoEspecialista >0)
                filter.addEspecialista(this.CodigoEspecialista);

            List<LojaDTO> ds = CadastroFacade.FindLojaDetalhe(filter);

            dataList.DataSource = ds;
            dataList.DataBind();

            // DataList footer hack!
            if (ds.Count > 0) {
                gridHeader.Visible = true;
                gridScroll.Visible = true;
                editControls.Visible = true;
            }
            else {
                gridHeader.Visible = false;
                gridScroll.Visible = false;
                editControls.Visible = false;
            }
        }

        
        #region -- PESQUISAS: Exibição dos Popups -----------------------------

        protected void cmdPesquisarRfs_Click(object sender, EventArgs e)            {
            pesquisaRfs.pop();
        }

        protected void cmdPesquisarRegiao_Click(object sender, EventArgs e)         {
            pesquisaRegiao.pop();
        }

        protected void cmdPesquisarEspecialista_Click(object sender, EventArgs e)   {
            pesquisaEspecialista.pop();
        }

        #endregion


        #region -- PESQUISAS: Event Handlers ----------------------------------

        protected void pesquisaRfs_Confirmar(object sender, PesquisaRfsEventArgs e)                     {
            this.CodigoRfs = e.Id;
            txtRfs.Text = e.Nome;
            txtRfs.ToolTip = e.Descricao;
        }

        protected void pesquisaRegiao_Confirmar(object sender, PesquisaRegiaoEventArgs e)               {
            this.CodigoRegiao = e.Id;
            txtRegiao.Text = e.Nome;
        }

        protected void pesquisaEspecialista_Confirmar(object sender, PesquisaEspecialistaEventArgs e)   {
            this.CodigoEspecialista = e.Id;
            txtEspecialista.Text = e.Nome;
        }

        #endregion


        #region -- Page Properties --------------------------------------------

        public int CodigoLoja           {
            get {
                if (ViewState["m_codigoLoja"] != null)
                    return Convert.ToInt32(ViewState["m_codigoLoja"]);
                return 0;
            }
            set {
                ViewState.Add("m_codigoLoja", value);
            }
        }

        public int CodigoRfs            {
            get {
                if (ViewState["m_codigoRfs"] != null)
                    return Convert.ToInt32(ViewState["m_codigoRfs"]);
                return 0;
            }
            set {
                ViewState.Add("m_codigoRfs", value);
            }
        }

        public int CodigoRegiao         {
            get {
                if (ViewState["m_codigoRegiao"] != null)
                    return Convert.ToInt32(ViewState["m_codigoRegiao"]);
                return 0;
            }
            set {
                ViewState.Add("m_codigoRegiao", value);
            }
        }

        public int CodigoEspecialista   {
            get {
                if (ViewState["m_codigoEspecialista"] != null)
                    return Convert.ToInt32(ViewState["m_codigoEspecialista"]);
                return 0;
            }
            set {
                ViewState.Add("m_codigoEspecialista", value);
            }
        }

        public string PageMode          {
            get {
                if (ViewState["m_pageMode"] != null)
                    return Convert.ToString(ViewState["m_pageMode"]);
                return "VIEW";
            }
            set {
                ViewState.Add("m_pageMode", value);
            }
        }

        #endregion
    }
}
